# 2025.09.19力扣网刷题
# 汇总区间——数组——简单
# 给定一个  无重复元素 的 有序 整数数组 nums 。
# 区间[a, b] 是从 a 到 b（包含）的所有整数的集合。
# 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说，nums 的每个元素都恰好被某个区间范围所覆盖，并且不存在属于某个区间但不属于 nums 的数字 x 。
# 列表中的每个区间范围[a, b] 应该按如下格式输出：
# "a->b" ，如果 a != b
# "a" ，如果 a == b
# 示例 1：
# 输入：nums = [0, 1, 2, 4, 5, 7]
# 输出：["0->2", "4->5", "7"]
# 解释：区间范围是：
# [0, 2] -- > "0->2"
# [4, 5] -- > "4->5"
# [7, 7] -- > "7"
# 示例 2：
# 输入：nums = [0, 2, 3, 4, 6, 8, 9]
# 输出：["0", "2->4", "6", "8->9"]
# 解释：区间范围是：
# [0, 0] -- > "0"
# [2, 4] -- > "2->4"
# [6, 6] -- > "6"
# [8, 9] -- > "8->9"
# 提示：
# 0 <= nums.length <= 20
# - 2^31 <= nums[i] <= 2^31 - 1
# nums 中的所有值都 互不相同
# nums 按升序排列

class Solution(object):
    def summaryRanges(self, nums):
        """
        :type nums: List[int]
        :rtype: List[str]
        """
        length = len(nums)
        ans = []
        if length:
            begin, end = nums[0], nums[0]
            i = 1
            while i <= length:
                while i < length and end + 1 == nums[i]:
                    end = nums[i]
                    i += 1
                if begin == end:
                    ans.append(str(begin))
                else:
                    ans.append(str(begin) + '->' + str(end))
                if i == length:
                    break
                begin = end = nums[i]
                i += 1
        return ans
